/**
 * @Copyright ®2015 Sinosoft Co. Ltd. All rights reserved.<br/>
 * 项目名称 : 电子商务云服务平台
 * 创建日期 : 2016年6月28日
 * 修改历史 : 
 *     1. [2016年6月30日]修改文件 by chihouliang
 * 添加Javadoc注释，更新代码规范，静态工具类增加private构造函数，对代码进行优化，增加新功能
 */
package com.gavinwind.inspay.common.util;
import com.gavinwind.inspay.common.logger.PlatformLogger;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
/**
  *【配置文件工具】
  * @author Administrator
  * @date  May 24, 2011 
  * @version 1.0
  *【修改描述】
  * @author Gavin
  * @date  May 24, 2011
 */
public class PropertiesUtil {

    private PropertiesUtil() {}

    /**全局属性属性对象，保存所有手动加载的资源文件*/
    private static final Properties PROPS = new Properties();

    // add 2016年7月1日 chihouliang 日志
    /**日志*/
    private static PlatformLogger logger = PlatformLogger.getLogger(PropertiesUtil.class);

    /**
     * 配置地址
     */
    @Deprecated
    private static final String SYS_PROPERTIE_LOCAL = "/config-context.properties";

    /**
     * 
     * 加载系统配置
     * 
     * @param cLocationPath 资源文件的路径，使用相对路径
     * @return Properties 加载的属性文件对象
     * @history 
     *   1 edit  by chihouliang 2016年6月30日 对代码进行优化，日志记录
     */
    public static Properties loadPropertie(String cLocationPath) {
        InputStream tInputStream = null;
        try {
            String tUrl = PropertiesUtil.class.getClassLoader().getResource("").getPath();
            tInputStream = new FileInputStream(new File(tUrl).getPath() + cLocationPath);
            PROPS.load(tInputStream);
        } catch (Exception e) {
            logger.error("PropertiesUtil系统异常:",e);
        } finally {
            FileUtil.closeInputStream(tInputStream);
        }
        return PROPS;
    }

    /**
     * 
     * 清理加载过的属性文件
     * @history 
     *   1 add  by chihouliang 2016年6月30日 
     */
    public static void cleanProperties() {
        PROPS.clear();
    }

    /**
     * 获取属性值，属性的存储使用键值对的形式。类似map结构，通过key获取value值。如果值不存在，返回null
     * @param cKey 与value对应的key值
     * @return 与key值对应的value(String类型)值，不存在时返回Null
     * @history 
     *   1 add  by chihouliang 2016年6月30日 
     */
    public static String getPropertie(String cKey) {
        String tValue = null;
        try {
            tValue = PROPS.getProperty(cKey);
        } catch (Exception e) {
            logger.error("PropertiesUtil系统异常",e);
        }
        return tValue;
    }

    /**
     * 
      * 获取配置文件中的值，配置文件为/config-context.properties
      * 
      * @param cKey
      *      key值
      * @return 与key对应的value值
     */
    @Deprecated
    public static String getSysPropertie(String cKey) {
        String tPropValue = null;
        try {
            Properties tProps = loadPropertie(SYS_PROPERTIE_LOCAL);
            tPropValue = (String) tProps.get(cKey);
        } catch (Exception e) {
            tPropValue = "";
        }
        return tPropValue;
    }

}
